<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.12"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>HexFiend: HFController Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">HexFiend
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.12 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="#properties">Properties</a> &#124;
<a href="interface_h_f_controller-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">HFController Class Reference<div class="ingroups"><a class="el" href="group__controller.html">Controller</a></div></div>  </div>
</div><!--header-->
<div class="contents">

<p>A central class that acts as the controller layer for HexFiend.framework.  
 <a href="interface_h_f_controller.html#details">More...</a></p>
<div class="dynheader">
Inheritance diagram for HFController:</div>
<div class="dyncontent">
 <div class="center">
  <img src="interface_h_f_controller.png" usemap="#HFController_map" alt=""/>
  <map id="HFController_map" name="HFController_map">
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Instance Methods</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Property transactions</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Methods for temporarily delaying notifying representers of property changes. There is a property transaction stack, and all property changes are collected until the last token is popped off the stack, at which point all representers are notified of all collected changes via representerChangedProperties:. To use this, call beginPropertyChangeTransaction, and record the token that is returned. Pass it to endPropertyChangeTransaction: to notify representers of all changed properties in bulk.</p>
<p>Tokens cannot be popped out of order - they are used only as a correctness check. </p>
</div></td></tr>
<tr class="memitem:ae06e532a971d22fdbee319e6d945dfc0"><td class="memItemLeft" align="right" valign="top">(NSUInteger)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#ae06e532a971d22fdbee319e6d945dfc0">beginPropertyChangeTransaction</a></td></tr>
<tr class="separator:ae06e532a971d22fdbee319e6d945dfc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abd125ad02e37fdfe9717009802299521"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#abd125ad02e37fdfe9717009802299521">endPropertyChangeTransaction:</a></td></tr>
<tr class="separator:abd125ad02e37fdfe9717009802299521"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Properties shared between all representers</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>The following properties are considered global among all HFRepresenters attached to the receiver. </p>
</div></td></tr>
<tr class="memitem:a0d622d3c4081ac3d02c31ea10b7e36e0"><td class="memItemLeft" align="right" valign="top">(unsigned long long)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a0d622d3c4081ac3d02c31ea10b7e36e0">totalLineCount</a></td></tr>
<tr class="separator:a0d622d3c4081ac3d02c31ea10b7e36e0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aed984819ab1e75a22e77b6635fcd4fac"><td class="memItemLeft" align="right" valign="top">(NSUInteger)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#aed984819ab1e75a22e77b6635fcd4fac">bytesPerLine</a></td></tr>
<tr class="separator:aed984819ab1e75a22e77b6635fcd4fac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a75054d2f63731ef1a7929a2ea3b085d9"><td class="memItemLeft" align="right" valign="top">(CGFloat)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a75054d2f63731ef1a7929a2ea3b085d9">lineHeight</a></td></tr>
<tr class="separator:a75054d2f63731ef1a7929a2ea3b085d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Selection pulsing</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Used to show the current selection after a change, similar to Find in Safari </p>
</div></td></tr>
<tr class="memitem:abf7e8cacb521993742fd88db9a9ef77e"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#abf7e8cacb521993742fd88db9a9ef77e">pulseSelection</a></td></tr>
<tr class="separator:abf7e8cacb521993742fd88db9a9ef77e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a880de2a78166ed64f22643e7f71428ea"><td class="memItemLeft" align="right" valign="top">(double)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a880de2a78166ed64f22643e7f71428ea">selectionPulseAmount</a></td></tr>
<tr class="separator:a880de2a78166ed64f22643e7f71428ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:af4ad4d24f57132e3d27a054ab8bfd89b"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#af4ad4d24f57132e3d27a054ab8bfd89b">representer:changedProperties:</a></td></tr>
<tr class="separator:af4ad4d24f57132e3d27a054ab8bfd89b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Mouse selection</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Methods to handle mouse selection. Representers that allow text selection should call beginSelectionWithEvent:forByteIndex: upon receiving a mouseDown event, and then continueSelectionWithEvent:forByteIndex: for mouseDragged events, terminating with endSelectionWithEvent:forByteIndex: upon receiving the mouse up. <a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> will compute the correct selected ranges and propagate any changes via the HFControllerPropertyBits mechanism. </p>
</div></td></tr>
<tr class="memitem:ace15457e82be596d88508f57450743e4"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#ace15457e82be596d88508f57450743e4">beginSelectionWithEvent:forByteIndex:</a></td></tr>
<tr class="separator:ace15457e82be596d88508f57450743e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8cca61e51681851e7214c6e83e5ea4a3"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a8cca61e51681851e7214c6e83e5ea4a3">continueSelectionWithEvent:forByteIndex:</a></td></tr>
<tr class="separator:a8cca61e51681851e7214c6e83e5ea4a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6056a241ed5578f3158f2057a6e0c154"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a6056a241ed5578f3158f2057a6e0c154">endSelectionWithEvent:forByteIndex:</a></td></tr>
<tr class="separator:a6056a241ed5578f3158f2057a6e0c154"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Scrollling</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Support for the mouse wheel and scroll bars. </p>
</div></td></tr>
<tr class="memitem:ad360138919e9089c6edd7868a318bb93"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#ad360138919e9089c6edd7868a318bb93">scrollWithScrollEvent:</a></td></tr>
<tr class="separator:ad360138919e9089c6edd7868a318bb93"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a101555ad8fbdad75022ba0ad59c43cc3"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a101555ad8fbdad75022ba0ad59c43cc3">scrollByLines:</a></td></tr>
<tr class="separator:a101555ad8fbdad75022ba0ad59c43cc3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Keyboard navigation</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Support for chaging the selection via the keyboard </p>
</div></td></tr>
<tr class="memitem:a748da633f56f9862fe4d3a5d5a667364"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a748da633f56f9862fe4d3a5d5a667364">moveInDirection:byByteCount:withSelectionTransformation:usingAnchor:</a></td></tr>
<tr class="separator:a748da633f56f9862fe4d3a5d5a667364"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af33f09cabf1b0bd4862186fcc97fc4e8"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#af33f09cabf1b0bd4862186fcc97fc4e8">moveInDirection:withGranularity:andModifySelection:</a></td></tr>
<tr class="separator:af33f09cabf1b0bd4862186fcc97fc4e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b9b93cb1a643e75206bcb6d9197fe55"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a0b9b93cb1a643e75206bcb6d9197fe55">moveToLineBoundaryInDirection:andModifySelection:</a></td></tr>
<tr class="separator:a0b9b93cb1a643e75206bcb6d9197fe55"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Text editing</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Methods to support common text editing operations </p>
</div></td></tr>
<tr class="memitem:aec28ad7b6be7d049532067ffd9ad4228"><td class="memItemLeft" align="right" valign="top">(BOOL)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#aec28ad7b6be7d049532067ffd9ad4228">insertByteArray:replacingPreviousBytes:allowUndoCoalescing:</a></td></tr>
<tr class="separator:aec28ad7b6be7d049532067ffd9ad4228"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afd9ca8b71c745f26ffc9501a710fddd3"><td class="memItemLeft" align="right" valign="top">(BOOL)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#afd9ca8b71c745f26ffc9501a710fddd3">insertData:replacingPreviousBytes:allowUndoCoalescing:</a></td></tr>
<tr class="separator:afd9ca8b71c745f26ffc9501a710fddd3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af00b1ffb077f9a69e4e81271e2326a65"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#af00b1ffb077f9a69e4e81271e2326a65">deleteSelection</a></td></tr>
<tr class="separator:af00b1ffb077f9a69e4e81271e2326a65"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3ab4cca9b78f0d7654a7a47a8f5d3348"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a3ab4cca9b78f0d7654a7a47a8f5d3348">deleteDirection:</a></td></tr>
<tr class="separator:a3ab4cca9b78f0d7654a7a47a8f5d3348"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Reading data</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Methods for reading data </p>
</div></td></tr>
<tr class="memitem:a1cde2c2c601a6093183bf5d46744e41c"><td class="memItemLeft" align="right" valign="top">(NSData *)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a1cde2c2c601a6093183bf5d46744e41c">dataForRange:</a></td></tr>
<tr class="separator:a1cde2c2c601a6093183bf5d46744e41c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a192bb66065016f462de21621a1a9627d"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a192bb66065016f462de21621a1a9627d">copyBytes:range:</a></td></tr>
<tr class="separator:a192bb66065016f462de21621a1a9627d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6f97f85a07846c175eec9d120b7ab0c"><td class="memItemLeft" align="right" valign="top">(<a class="el" href="interface_h_f_byte_range_attribute_array.html">HFByteRangeAttributeArray</a> *)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#ae6f97f85a07846c175eec9d120b7ab0c">byteRangeAttributeArray</a></td></tr>
<tr class="separator:ae6f97f85a07846c175eec9d120b7ab0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee334d276545d87999f50068d92fdbc9"><td class="memItemLeft" align="right" valign="top">(<a class="el" href="interface_h_f_byte_range_attribute_array.html">HFByteRangeAttributeArray</a> *)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#aee334d276545d87999f50068d92fdbc9">attributesForBytesInRange:</a></td></tr>
<tr class="separator:aee334d276545d87999f50068d92fdbc9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9c1dd8642e2699e3905607af4baebda"><td class="memItemLeft" align="right" valign="top">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#af9c1dd8642e2699e3905607af4baebda">rangeForBookmark:</a></td></tr>
<tr class="separator:af9c1dd8642e2699e3905607af4baebda"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab4ad47abb8b332730ee6f70a41ebcb6d"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#ab4ad47abb8b332730ee6f70a41ebcb6d">setRange:forBookmark:</a></td></tr>
<tr class="separator:ab4ad47abb8b332730ee6f70a41ebcb6d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2d070cf8360a9a5caf0ecabcb68e826e"><td class="memItemLeft" align="right" valign="top">(NSIndexSet *)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a2d070cf8360a9a5caf0ecabcb68e826e">bookmarksInRange:</a></td></tr>
<tr class="separator:a2d070cf8360a9a5caf0ecabcb68e826e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63873f2b9439048b9ba1c406ec033b44"><td class="memItemLeft" align="right" valign="top">(unsigned long long)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a63873f2b9439048b9ba1c406ec033b44">contentsLength</a></td></tr>
<tr class="separator:a63873f2b9439048b9ba1c406ec033b44"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a1875b07981f69ff10d2a9d0f80a8692b"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a1875b07981f69ff10d2a9d0f80a8692b">_hfflags</a></td></tr>
<tr class="separator:a1875b07981f69ff10d2a9d0f80a8692b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="properties"></a>
Properties</h2></td></tr>
<tr class="memitem:a669a1b434286d5a7a7f2d43db782317b"><td class="memItemLeft" align="right" valign="top">NSUInteger&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a669a1b434286d5a7a7f2d43db782317b">bytesPerColumn</a></td></tr>
<tr class="separator:a669a1b434286d5a7a7f2d43db782317b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac564096554a861c9f44367124db70b4b"><td class="memItemLeft" align="right" valign="top">NSFont *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#ac564096554a861c9f44367124db70b4b">font</a></td></tr>
<tr class="separator:ac564096554a861c9f44367124db70b4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6de9ee37b5cd96782914f3eeebc90b16"><td class="memItemLeft" align="right" valign="top">NSUndoManager *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a6de9ee37b5cd96782914f3eeebc90b16">undoManager</a></td></tr>
<tr class="separator:a6de9ee37b5cd96782914f3eeebc90b16"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0ccaf58ac06e6510b2f40fc1f07c5211"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a0ccaf58ac06e6510b2f40fc1f07c5211">editable</a></td></tr>
<tr class="separator:a0ccaf58ac06e6510b2f40fc1f07c5211"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a84544b8696b23b09c57d4109b66aff32"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a84544b8696b23b09c57d4109b66aff32">shouldAntialias</a></td></tr>
<tr class="separator:a84544b8696b23b09c57d4109b66aff32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6b5134d1f69168837f03bebaa9cba8a8"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a6b5134d1f69168837f03bebaa9cba8a8">shouldColorBytes</a></td></tr>
<tr class="separator:a6b5134d1f69168837f03bebaa9cba8a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aea515702f7baa6ee15205e02522bd6d6"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#aea515702f7baa6ee15205e02522bd6d6">shouldShowCallouts</a></td></tr>
<tr class="separator:aea515702f7baa6ee15205e02522bd6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abb13ce4a51b7bf13e0c801ef7efc5714"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#abb13ce4a51b7bf13e0c801ef7efc5714">shouldHideNullBytes</a></td></tr>
<tr class="separator:abb13ce4a51b7bf13e0c801ef7efc5714"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7a2e2b3a4e90c3c56ba3129cfecf8b6"><td class="memItemLeft" align="right" valign="top">BOOL&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#aa7a2e2b3a4e90c3c56ba3129cfecf8b6">shouldLiveReload</a></td></tr>
<tr class="separator:aa7a2e2b3a4e90c3c56ba3129cfecf8b6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Edit Mode</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>Determines what mode we're in, read-only, overwrite or insert. </p>
</div></td></tr>
<tr class="memitem:ace0cc93e891e8b31c4320040702a6f0f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="_h_f_controller_8h.html#a699a6c9cf2166c36da490e29d6ed2473">HFEditMode</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#ace0cc93e891e8b31c4320040702a6f0f">editMode</a></td></tr>
<tr class="separator:ace0cc93e891e8b31c4320040702a6f0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Representer handling.</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp10b65f63070a206220bb9f4fffcf21a6"></a>Methods for modifying the list of HFRepresenters attached to a controller. Attached representers receive the controllerDidChange: message when various properties of the controller change. A representer may only be attached to one controller at a time. Representers are retained by the controller. </p>
</td></tr>
<tr class="memitem:a165dbb3c3e4c7f8154b2349b0d132147"><td class="memItemLeft" align="right" valign="top">NSArray *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a165dbb3c3e4c7f8154b2349b0d132147">representers</a></td></tr>
<tr class="memdesc:a165dbb3c3e4c7f8154b2349b0d132147"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the current array of representers attached to this controller.  <a href="#a165dbb3c3e4c7f8154b2349b0d132147">More...</a><br /></td></tr>
<tr class="separator:a165dbb3c3e4c7f8154b2349b0d132147"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad73e4ffe460788bcd9eb92ce787e1bb3"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#ad73e4ffe460788bcd9eb92ce787e1bb3">addRepresenter:</a></td></tr>
<tr class="memdesc:ad73e4ffe460788bcd9eb92ce787e1bb3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds a new representer to this controller.  <a href="#ad73e4ffe460788bcd9eb92ce787e1bb3">More...</a><br /></td></tr>
<tr class="separator:ad73e4ffe460788bcd9eb92ce787e1bb3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a86c8210e506241fd9ffcf1178ccda638"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a86c8210e506241fd9ffcf1178ccda638">removeRepresenter:</a></td></tr>
<tr class="memdesc:a86c8210e506241fd9ffcf1178ccda638"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an existing representer from this controller. The representer must be present in the array of representers.  <a href="#a86c8210e506241fd9ffcf1178ccda638">More...</a><br /></td></tr>
<tr class="separator:a86c8210e506241fd9ffcf1178ccda638"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Byte array</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp0104c6fb386b10577097be7802b7137a"></a>Set and get the byte array. </p>
</td></tr>
<tr class="memitem:a8e3c9ca47f754544fef36de9d7e0f56e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="interface_h_f_byte_array.html">HFByteArray</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a8e3c9ca47f754544fef36de9d7e0f56e">byteArray</a></td></tr>
<tr class="separator:a8e3c9ca47f754544fef36de9d7e0f56e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ace0be446660da37a3cdb792147eb4450"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#ace0be446660da37a3cdb792147eb4450">replaceByteArray:</a></td></tr>
<tr class="separator:ace0be446660da37a3cdb792147eb4450"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Selection handling</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrp61dd9081693e8afde55cc82eb4fd5cdf"></a>Methods for manipulating the current selected ranges. Hex Fiend supports discontiguous selection. </p>
</td></tr>
<tr class="memitem:a756334ab2576fda6191f396424eb032a"><td class="memItemLeft" align="right" valign="top">NSArray *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#a756334ab2576fda6191f396424eb032a">selectedContentsRanges</a></td></tr>
<tr class="separator:a756334ab2576fda6191f396424eb032a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaba68329641a7b726a5ce15a6497b5c5"><td class="memItemLeft" align="right" valign="top">(IBAction)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#aaba68329641a7b726a5ce15a6497b5c5">selectAll:</a></td></tr>
<tr class="separator:aaba68329641a7b726a5ce15a6497b5c5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a93786a0f5d77922ebd0ff33ec86cf619"><td class="memItemLeft" align="right" valign="top">(unsigned long long)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a93786a0f5d77922ebd0ff33ec86cf619">minimumSelectionLocation</a></td></tr>
<tr class="separator:a93786a0f5d77922ebd0ff33ec86cf619"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49bbc9b470ded0129647c4f8e43f3238"><td class="memItemLeft" align="right" valign="top">(unsigned long long)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a49bbc9b470ded0129647c4f8e43f3238">maximumSelectionLocation</a></td></tr>
<tr class="separator:a49bbc9b470ded0129647c4f8e43f3238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fbfe5277deb412a9cf30e4d23768d6a"><td class="memItemLeft" align="right" valign="top">(<a class="el" href="interface_h_f_byte_array.html">HFByteArray</a> *)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a7fbfe5277deb412a9cf30e4d23768d6a">byteArrayForSelectedContentsRanges</a></td></tr>
<tr class="separator:a7fbfe5277deb412a9cf30e4d23768d6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
Displayed line range</h2></td></tr>
<tr><td class="ititle" colspan="2"><p><a class="anchor" id="amgrpaef650022590e736e4760781eb33f5fa"></a>Methods for setting and getting the current range of displayed lines. </p>
</td></tr>
<tr class="memitem:afc8537436d0b38a6763563296bd23a66"><td class="memItemLeft" align="right" valign="top"><a class="el" href="struct_h_f_f_p_range.html">HFFPRange</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="interface_h_f_controller.html#afc8537436d0b38a6763563296bd23a66">displayedLineRange</a></td></tr>
<tr class="separator:afc8537436d0b38a6763563296bd23a66"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56a018dd37edf85c0827b1ddb8033c1e"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a56a018dd37edf85c0827b1ddb8033c1e">maximizeVisibilityOfContentsRange:</a></td></tr>
<tr class="separator:a56a018dd37edf85c0827b1ddb8033c1e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1f6f628d0e41ad0f9d08fcb6e4859ff6"><td class="memItemLeft" align="right" valign="top">(void)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a1f6f628d0e41ad0f9d08fcb6e4859ff6">centerContentsRange:</a></td></tr>
<tr class="separator:a1f6f628d0e41ad0f9d08fcb6e4859ff6"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="member-group"></a>
File writing dependency handling</h2></td></tr>
<tr class="memitem:a7a967d099a9a9dbed8c64cb1e0057c3b"><td class="memItemLeft" align="right" valign="top">(BOOL)&#160;</td><td class="memItemRight" valign="bottom">- <a class="el" href="interface_h_f_controller.html#a7a967d099a9a9dbed8c64cb1e0057c3b">clearUndoManagerDependenciesOnRanges:inFile:hint:</a></td></tr>
<tr class="separator:a7a967d099a9a9dbed8c64cb1e0057c3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a95d775e24dfb80cc0ca81e590d39ec62"><td class="memItemLeft" align="right" valign="top">(BOOL)&#160;</td><td class="memItemRight" valign="bottom">+ <a class="el" href="interface_h_f_controller.html#a95d775e24dfb80cc0ca81e590d39ec62">prepareForChangeInFile:fromWritingByteArray:</a></td></tr>
<tr class="separator:a95d775e24dfb80cc0ca81e590d39ec62"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p><a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> acts as the controller layer in the MVC architecture of HexFiend. The <a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> plays several significant central roles, including:</p><ul>
<li>Mediating between the data itself (in the <a class="el" href="interface_h_f_byte_array.html" title="The principal Model class for HexFiend&#39;s MVC architecture. ">HFByteArray</a>) and the views of the data (the <a class="el" href="interface_h_f_representer.html">HFRepresenters</a>).</li>
<li>Propagating changes to the views.</li>
<li>Storing properties common to all Representers, such as the currently diplayed range, the currently selected range(s), the font, etc.</li>
<li>Handling text editing actions, such as selection changes or insertions/deletions.</li>
</ul>
<p>An <a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> is the top point of ownership for a HexFiend object graph. It retains both its ByteArray (model) and its array of Representers (views).</p>
<p>You create an <a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> via <code>[[<a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> alloc] init]</code>. After that, give it an <a class="el" href="interface_h_f_byte_array.html" title="The principal Model class for HexFiend&#39;s MVC architecture. ">HFByteArray</a> via setByteArray:, and some Representers via addRepresenter:. Then insert the Representers' views in a window, and you're done. </p>
</div><h2 class="groupheader">Method Documentation</h2>
<a id="ad73e4ffe460788bcd9eb92ce787e1bb3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad73e4ffe460788bcd9eb92ce787e1bb3">&sect;&nbsp;</a></span>addRepresenter:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) addRepresenter: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="interface_h_f_representer.html">HFRepresenter</a> *)&#160;</td>
          <td class="paramname"><em>representer</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="a86c8210e506241fd9ffcf1178ccda638"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a86c8210e506241fd9ffcf1178ccda638">&sect;&nbsp;</a></span>removeRepresenter:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) removeRepresenter: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="interface_h_f_representer.html">HFRepresenter</a> *)&#160;</td>
          <td class="paramname"><em>representer</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="ae06e532a971d22fdbee319e6d945dfc0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae06e532a971d22fdbee319e6d945dfc0">&sect;&nbsp;</a></span>beginPropertyChangeTransaction()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (NSUInteger) beginPropertyChangeTransaction </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Begins delaying property change transactions. Returns a token that should be passed to endPropertyChangeTransactions:. </p>

</div>
</div>
<a id="abd125ad02e37fdfe9717009802299521"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abd125ad02e37fdfe9717009802299521">&sect;&nbsp;</a></span>endPropertyChangeTransaction:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) endPropertyChangeTransaction: </td>
          <td></td>
          <td class="paramtype">(NSUInteger)&#160;</td>
          <td class="paramname"><em>token</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Pass a token returned from beginPropertyChangeTransaction to this method to pop the transaction off the stack and, if the stack is empty, to notify Representers of all collected changes. Tokens cannot be popped out of order - they are used strictly as a correctness check. </p>

</div>
</div>
<a id="ace0be446660da37a3cdb792147eb4450"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace0be446660da37a3cdb792147eb4450">&sect;&nbsp;</a></span>replaceByteArray:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) replaceByteArray: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="interface_h_f_byte_array.html">HFByteArray</a> *)&#160;</td>
          <td class="paramname"><em>newArray</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Replaces the entire byte array with a new one, preserving as much of the selection as possible. Unlike setByteArray:, this method is undoable, and intended to be used from representers that make a global change (such as Replace All). </p>

</div>
</div>
<a id="a0d622d3c4081ac3d02c31ea10b7e36e0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0d622d3c4081ac3d02c31ea10b7e36e0">&sect;&nbsp;</a></span>totalLineCount()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (unsigned long long) totalLineCount </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the number of lines on which the cursor may be placed. This is always at least 1, and is equivalent to (unsigned long long)(HFRoundUpToNextMultiple(contentsLength, bytesPerLine) / bytesPerLine) </p>

</div>
</div>
<a id="aed984819ab1e75a22e77b6635fcd4fac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aed984819ab1e75a22e77b6635fcd4fac">&sect;&nbsp;</a></span>bytesPerLine()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (NSUInteger) bytesPerLine </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Indicates the number of bytes per line, which is a global property among all the line-oriented representers. </p>

</div>
</div>
<a id="a75054d2f63731ef1a7929a2ea3b085d9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a75054d2f63731ef1a7929a2ea3b085d9">&sect;&nbsp;</a></span>lineHeight()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (CGFloat) lineHeight </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the height of a line, in points. This is generally determined by the font. Representers that wish to align things to lines should use this. </p>

</div>
</div>
<a id="abf7e8cacb521993742fd88db9a9ef77e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf7e8cacb521993742fd88db9a9ef77e">&sect;&nbsp;</a></span>pulseSelection()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) pulseSelection </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Begins selection pulsing (e.g. following a successful Find operation). Representers will receive callbacks indicating that HFControllerSelectionPulseAmount has changed. </p>

</div>
</div>
<a id="a880de2a78166ed64f22643e7f71428ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a880de2a78166ed64f22643e7f71428ea">&sect;&nbsp;</a></span>selectionPulseAmount()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (double) selectionPulseAmount </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Return the amount that the "Find pulse indicator" should show. 0 means no pulse, 1 means maximum pulse. This is useful for Representers that support find and replace. </p>

</div>
</div>
<a id="aaba68329641a7b726a5ce15a6497b5c5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaba68329641a7b726a5ce15a6497b5c5">&sect;&nbsp;</a></span>selectAll:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (IBAction) selectAll: </td>
          <td></td>
          <td class="paramtype">(id)&#160;</td>
          <td class="paramname"><em>sender</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Selects the entire contents. </p>

</div>
</div>
<a id="a93786a0f5d77922ebd0ff33ec86cf619"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a93786a0f5d77922ebd0ff33ec86cf619">&sect;&nbsp;</a></span>minimumSelectionLocation()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (unsigned long long) minimumSelectionLocation </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the smallest value in the selected contents ranges, or the insertion location if the selection is empty. </p>

</div>
</div>
<a id="a49bbc9b470ded0129647c4f8e43f3238"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a49bbc9b470ded0129647c4f8e43f3238">&sect;&nbsp;</a></span>maximumSelectionLocation()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (unsigned long long) maximumSelectionLocation </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the largest HFMaxRange of the selected contents ranges, or the insertion location if the selection is empty. </p>

</div>
</div>
<a id="a7fbfe5277deb412a9cf30e4d23768d6a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fbfe5277deb412a9cf30e4d23768d6a">&sect;&nbsp;</a></span>byteArrayForSelectedContentsRanges()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (<a class="el" href="interface_h_f_byte_array.html">HFByteArray</a> *) byteArrayForSelectedContentsRanges </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convenience method for creating a byte array containing all of the selected bytes. If the selection has length 0, this returns an empty byte array. </p>

</div>
</div>
<a id="a56a018dd37edf85c0827b1ddb8033c1e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56a018dd37edf85c0827b1ddb8033c1e">&sect;&nbsp;</a></span>maximizeVisibilityOfContentsRange:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) maximizeVisibilityOfContentsRange: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td>
          <td class="paramname"><em>range</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Modify the displayedLineRange so that as much of the given range as can fit is visible. If possible, moves by as little as possible so that the visible ranges before and afterward intersect with each other. </p>

</div>
</div>
<a id="a1f6f628d0e41ad0f9d08fcb6e4859ff6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1f6f628d0e41ad0f9d08fcb6e4859ff6">&sect;&nbsp;</a></span>centerContentsRange:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) centerContentsRange: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td>
          <td class="paramname"><em>range</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Modify the displayedLineRange as to center the given contents range. If the range is near the bottom or top, this will center as close as possible. If contents range is too large to fit, it centers the top of the range. contentsRange may be empty. </p>

</div>
</div>
<a id="af4ad4d24f57132e3d27a054ab8bfd89b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4ad4d24f57132e3d27a054ab8bfd89b">&sect;&nbsp;</a></span>representer:changedProperties:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) representer: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="interface_h_f_representer.html">HFRepresenter</a> *)&#160;</td>
          <td class="paramname"><em>rep</em></td>
        </tr>
        <tr>
          <td class="paramkey">changedProperties:</td>
          <td></td>
          <td class="paramtype">(<a class="el" href="_h_f_controller_8h.html#adfb5b0d9c70a4b65379361b34ba1aea5">HFControllerPropertyBits</a>)&#160;</td>
          <td class="paramname"><em>properties</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Representer initiated property changes Called from a representer to indicate when some internal property of the representer has changed which requires that some properties be recalculated.</p>
<p>Callback for a representer-initiated change to some property. For example, if some property of a view changes that would cause the number of bytes per line to change, then the representer should call this method which will trigger the <a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> to recompute the relevant properties. </p>

</div>
</div>
<a id="ace15457e82be596d88508f57450743e4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace15457e82be596d88508f57450743e4">&sect;&nbsp;</a></span>beginSelectionWithEvent:forByteIndex:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) beginSelectionWithEvent: </td>
          <td></td>
          <td class="paramtype">(NSEvent *)&#160;</td>
          <td class="paramname"><em>event</em></td>
        </tr>
        <tr>
          <td class="paramkey">forByteIndex:</td>
          <td></td>
          <td class="paramtype">(unsigned long long)&#160;</td>
          <td class="paramname"><em>byteIndex</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Begin a selection session, with a mouse down at the given byte index. </p>

</div>
</div>
<a id="a8cca61e51681851e7214c6e83e5ea4a3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8cca61e51681851e7214c6e83e5ea4a3">&sect;&nbsp;</a></span>continueSelectionWithEvent:forByteIndex:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) continueSelectionWithEvent: </td>
          <td></td>
          <td class="paramtype">(NSEvent *)&#160;</td>
          <td class="paramname"><em>event</em></td>
        </tr>
        <tr>
          <td class="paramkey">forByteIndex:</td>
          <td></td>
          <td class="paramtype">(unsigned long long)&#160;</td>
          <td class="paramname"><em>byteIndex</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Continue a selection session, whe the user drags over the given byte index. </p>

</div>
</div>
<a id="a6056a241ed5578f3158f2057a6e0c154"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6056a241ed5578f3158f2057a6e0c154">&sect;&nbsp;</a></span>endSelectionWithEvent:forByteIndex:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) endSelectionWithEvent: </td>
          <td></td>
          <td class="paramtype">(NSEvent *)&#160;</td>
          <td class="paramname"><em>event</em></td>
        </tr>
        <tr>
          <td class="paramkey">forByteIndex:</td>
          <td></td>
          <td class="paramtype">(unsigned long long)&#160;</td>
          <td class="paramname"><em>byteIndex</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>End a selection session, with a mouse up at the given byte index. </p>

</div>
</div>
<a id="ad360138919e9089c6edd7868a318bb93"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad360138919e9089c6edd7868a318bb93">&sect;&nbsp;</a></span>scrollWithScrollEvent:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) scrollWithScrollEvent: </td>
          <td></td>
          <td class="paramtype">(NSEvent *)&#160;</td>
          <td class="paramname"><em>scrollEvent</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Trigger scrolling appropriate for the given scroll event. </p>

</div>
</div>
<a id="a101555ad8fbdad75022ba0ad59c43cc3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a101555ad8fbdad75022ba0ad59c43cc3">&sect;&nbsp;</a></span>scrollByLines:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) scrollByLines: </td>
          <td></td>
          <td class="paramtype">(long double)&#160;</td>
          <td class="paramname"><em>lines</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Trigger scrolling by the given number of lines. If lines is positive, then the document is scrolled down; otherwise it is scrolled up. </p>

</div>
</div>
<a id="a748da633f56f9862fe4d3a5d5a667364"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a748da633f56f9862fe4d3a5d5a667364">&sect;&nbsp;</a></span>moveInDirection:byByteCount:withSelectionTransformation:usingAnchor:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) moveInDirection: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="_h_f_controller_8h.html#a375dde7ced2bf775954f9e950eec3add">HFControllerMovementDirection</a>)&#160;</td>
          <td class="paramname"><em>direction</em></td>
        </tr>
        <tr>
          <td class="paramkey">byByteCount:</td>
          <td></td>
          <td class="paramtype">(unsigned long long)&#160;</td>
          <td class="paramname"><em>amountToMove</em></td>
        </tr>
        <tr>
          <td class="paramkey">withSelectionTransformation:</td>
          <td></td>
          <td class="paramtype">(<a class="el" href="_h_f_controller_8h.html#a5439328d873d33dd7baf4622c28a513f">HFControllerSelectionTransformation</a>)&#160;</td>
          <td class="paramname"><em>transformation</em></td>
        </tr>
        <tr>
          <td class="paramkey">usingAnchor:</td>
          <td></td>
          <td class="paramtype">(BOOL)&#160;</td>
          <td class="paramname"><em>useAnchor</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>General purpose navigation function. Modify the selection in the given direction by the given number of bytes. The selection is modifed according to the given transformation. If useAnchor is set, then anchored selection is used; otherwise any anchor is discarded.</p>
<p>This has a few limitations:</p><ul>
<li>Only HFControllerDirectionLeft and HFControllerDirectionRight movement directions are supported.</li>
<li>Anchored selection is not supported for HFControllerShiftSelection (useAnchor must be NO) </li>
</ul>

</div>
</div>
<a id="af33f09cabf1b0bd4862186fcc97fc4e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af33f09cabf1b0bd4862186fcc97fc4e8">&sect;&nbsp;</a></span>moveInDirection:withGranularity:andModifySelection:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) moveInDirection: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="_h_f_controller_8h.html#a375dde7ced2bf775954f9e950eec3add">HFControllerMovementDirection</a>)&#160;</td>
          <td class="paramname"><em>direction</em></td>
        </tr>
        <tr>
          <td class="paramkey">withGranularity:</td>
          <td></td>
          <td class="paramtype">(<a class="el" href="_h_f_controller_8h.html#af7604c610ec5c06d5e9f65ae96fb6aa4">HFControllerMovementGranularity</a>)&#160;</td>
          <td class="paramname"><em>granularity</em></td>
        </tr>
        <tr>
          <td class="paramkey">andModifySelection:</td>
          <td></td>
          <td class="paramtype">(BOOL)&#160;</td>
          <td class="paramname"><em>extendSelection</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Navigation designed for key events. </p>

</div>
</div>
<a id="a0b9b93cb1a643e75206bcb6d9197fe55"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b9b93cb1a643e75206bcb6d9197fe55">&sect;&nbsp;</a></span>moveToLineBoundaryInDirection:andModifySelection:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) moveToLineBoundaryInDirection: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="_h_f_controller_8h.html#a375dde7ced2bf775954f9e950eec3add">HFControllerMovementDirection</a>)&#160;</td>
          <td class="paramname"><em>direction</em></td>
        </tr>
        <tr>
          <td class="paramkey">andModifySelection:</td>
          <td></td>
          <td class="paramtype">(BOOL)&#160;</td>
          <td class="paramname"><em>extendSelection</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="aec28ad7b6be7d049532067ffd9ad4228"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aec28ad7b6be7d049532067ffd9ad4228">&sect;&nbsp;</a></span>insertByteArray:replacingPreviousBytes:allowUndoCoalescing:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) insertByteArray: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="interface_h_f_byte_array.html">HFByteArray</a> *)&#160;</td>
          <td class="paramname"><em>byteArray</em></td>
        </tr>
        <tr>
          <td class="paramkey">replacingPreviousBytes:</td>
          <td></td>
          <td class="paramtype">(unsigned long long)&#160;</td>
          <td class="paramname"><em>previousByteCount</em></td>
        </tr>
        <tr>
          <td class="paramkey">allowUndoCoalescing:</td>
          <td></td>
          <td class="paramtype">(BOOL)&#160;</td>
          <td class="paramname"><em>allowUndoCoalescing</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Replaces the selection with the given data. For something like a hex view representer, it takes two keypresses to create a whole byte; the way this is implemented, the first keypress goes into the data as a complete byte, and the second one (if any) replaces it. If previousByteCount &gt; 0, then that many prior bytes are replaced, without breaking undo coalescing. For previousByteCount to be &gt; 0, the following must be true: There is only one selected range, and it is of length 0, and its location &gt;= previousByteCount</p>
<p>These functions return YES if they succeed, and NO if they fail. Currently they may fail only in overwrite mode, if you attempt to insert data that would require lengthening the byte array.</p>
<p>These methods are undoable. </p>

</div>
</div>
<a id="afd9ca8b71c745f26ffc9501a710fddd3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afd9ca8b71c745f26ffc9501a710fddd3">&sect;&nbsp;</a></span>insertData:replacingPreviousBytes:allowUndoCoalescing:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) insertData: </td>
          <td></td>
          <td class="paramtype">(NSData *)&#160;</td>
          <td class="paramname"><em>data</em></td>
        </tr>
        <tr>
          <td class="paramkey">replacingPreviousBytes:</td>
          <td></td>
          <td class="paramtype">(unsigned long long)&#160;</td>
          <td class="paramname"><em>previousByteCount</em></td>
        </tr>
        <tr>
          <td class="paramkey">allowUndoCoalescing:</td>
          <td></td>
          <td class="paramtype">(BOOL)&#160;</td>
          <td class="paramname"><em>allowUndoCoalescing</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a id="af00b1ffb077f9a69e4e81271e2326a65"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af00b1ffb077f9a69e4e81271e2326a65">&sect;&nbsp;</a></span>deleteSelection()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) deleteSelection </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Deletes the selection. This operation is undoable. </p>

</div>
</div>
<a id="a3ab4cca9b78f0d7654a7a47a8f5d3348"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3ab4cca9b78f0d7654a7a47a8f5d3348">&sect;&nbsp;</a></span>deleteDirection:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) deleteDirection: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="_h_f_controller_8h.html#a375dde7ced2bf775954f9e950eec3add">HFControllerMovementDirection</a>)&#160;</td>
          <td class="paramname"><em>direction</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>If the selection is empty, deletes one byte in a given direction, which must be HFControllerDirectionLeft or HFControllerDirectionRight; if the selection is not empty, deletes the selection. Undoable. </p>

</div>
</div>
<a id="a1cde2c2c601a6093183bf5d46744e41c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1cde2c2c601a6093183bf5d46744e41c">&sect;&nbsp;</a></span>dataForRange:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (NSData *) dataForRange: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td>
          <td class="paramname"><em>range</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns an NSData representing the given <a class="el" href="struct_h_f_range.html" title="HFRange is the 64 bit analog of NSRange, containing a 64 bit location and length. ...">HFRange</a>. The length of the <a class="el" href="struct_h_f_range.html" title="HFRange is the 64 bit analog of NSRange, containing a 64 bit location and length. ...">HFRange</a> must be of a size that can reasonably be fit in memory. This method may cache the result. </p>

</div>
</div>
<a id="a192bb66065016f462de21621a1a9627d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a192bb66065016f462de21621a1a9627d">&sect;&nbsp;</a></span>copyBytes:range:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) copyBytes: </td>
          <td></td>
          <td class="paramtype">(unsigned char *)&#160;</td>
          <td class="paramname"><em>bytes</em></td>
        </tr>
        <tr>
          <td class="paramkey">range:</td>
          <td></td>
          <td class="paramtype">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td>
          <td class="paramname"><em>range</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Copies data within the given <a class="el" href="struct_h_f_range.html" title="HFRange is the 64 bit analog of NSRange, containing a 64 bit location and length. ...">HFRange</a> into an in-memory buffer. This is equivalent to [[controller byteArray] copyBytes:bytes range:range]. </p>

</div>
</div>
<a id="ae6f97f85a07846c175eec9d120b7ab0c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae6f97f85a07846c175eec9d120b7ab0c">&sect;&nbsp;</a></span>byteRangeAttributeArray()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (<a class="el" href="interface_h_f_byte_range_attribute_array.html">HFByteRangeAttributeArray</a> *) byteRangeAttributeArray </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Convenience method that returns the attributes of the underlying byte array. You can message it directly to add and remove attributes. If you do so, be sure to call representer:changedProperties: with the HFControllerByteRangeAttributes bit </p>

</div>
</div>
<a id="aee334d276545d87999f50068d92fdbc9"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee334d276545d87999f50068d92fdbc9">&sect;&nbsp;</a></span>attributesForBytesInRange:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (<a class="el" href="interface_h_f_byte_range_attribute_array.html">HFByteRangeAttributeArray</a> *) attributesForBytesInRange: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td>
          <td class="paramname"><em>range</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the attributes for the given range. This is a union of the receiver's byteRangeAttributeArray properties and the properties returned by the byte array itself. range.length must be &lt;= NSUIntegerMax. </p>

</div>
</div>
<a id="af9c1dd8642e2699e3905607af4baebda"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af9c1dd8642e2699e3905607af4baebda">&sect;&nbsp;</a></span>rangeForBookmark:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (<a class="el" href="struct_h_f_range.html">HFRange</a>) rangeForBookmark: </td>
          <td></td>
          <td class="paramtype">(NSInteger)&#160;</td>
          <td class="paramname"><em>bookmark</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns the range for the given bookmark. If there is no bookmark, returns {ULLONG_MAX, ULLONG_MAX}. </p>

</div>
</div>
<a id="ab4ad47abb8b332730ee6f70a41ebcb6d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab4ad47abb8b332730ee6f70a41ebcb6d">&sect;&nbsp;</a></span>setRange:forBookmark:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (void) setRange: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td>
          <td class="paramname"><em>range</em></td>
        </tr>
        <tr>
          <td class="paramkey">forBookmark:</td>
          <td></td>
          <td class="paramtype">(NSInteger)&#160;</td>
          <td class="paramname"><em>bookmark</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Sets the range for the given bookmark. Pass {ULLONG_MAX, ULLONG_MAX} to remove the bookmark. Undoable. </p>

</div>
</div>
<a id="a2d070cf8360a9a5caf0ecabcb68e826e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2d070cf8360a9a5caf0ecabcb68e826e">&sect;&nbsp;</a></span>bookmarksInRange:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (NSIndexSet *) bookmarksInRange: </td>
          <td></td>
          <td class="paramtype">(<a class="el" href="struct_h_f_range.html">HFRange</a>)&#160;</td>
          <td class="paramname"><em>range</em></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns an NSIndexSet of the bookmarks in the given range. </p>

</div>
</div>
<a id="a63873f2b9439048b9ba1c406ec033b44"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a63873f2b9439048b9ba1c406ec033b44">&sect;&nbsp;</a></span>contentsLength()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (unsigned long long) contentsLength </td>
          <td></td>
          <td class="paramname"></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Returns total number of bytes. This is equivalent to [[controller byteArray] length]. </p>

</div>
</div>
<a id="a95d775e24dfb80cc0ca81e590d39ec62"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a95d775e24dfb80cc0ca81e590d39ec62">&sect;&nbsp;</a></span>prepareForChangeInFile:fromWritingByteArray:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">+ (BOOL) prepareForChangeInFile: </td>
          <td></td>
          <td class="paramtype">(NSURL *)&#160;</td>
          <td class="paramname"><em>targetFile</em></td>
        </tr>
        <tr>
          <td class="paramkey">fromWritingByteArray:</td>
          <td></td>
          <td class="paramtype">(<a class="el" href="interface_h_f_byte_array.html">HFByteArray</a> *)&#160;</td>
          <td class="paramname"><em>array</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Attempts to clear all dependencies on the given file (clipboard, undo, etc.) that could not be preserved if the file were written. Returns YES if we successfully prepared, NO if someone objected. This works by posting a HFPrepareForChangeInFileNotification. <a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> does not register for this notification: instead the owners of the <a class="el" href="interface_h_f_controller.html" title="A central class that acts as the controller layer for HexFiend.framework. ">HFController</a> are expected to register for HFPrepareForChangeInFileNotification and react appropriately. </p>

</div>
</div>
<a id="a7a967d099a9a9dbed8c64cb1e0057c3b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7a967d099a9a9dbed8c64cb1e0057c3b">&sect;&nbsp;</a></span>clearUndoManagerDependenciesOnRanges:inFile:hint:()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) clearUndoManagerDependenciesOnRanges: </td>
          <td></td>
          <td class="paramtype">(NSArray *)&#160;</td>
          <td class="paramname"><em>ranges</em></td>
        </tr>
        <tr>
          <td class="paramkey">inFile:</td>
          <td></td>
          <td class="paramtype">(<a class="el" href="interface_h_f_file_reference.html">HFFileReference</a> *)&#160;</td>
          <td class="paramname"><em>reference</em></td>
        </tr>
        <tr>
          <td class="paramkey">hint:</td>
          <td></td>
          <td class="paramtype">(NSMutableDictionary *)&#160;</td>
          <td class="paramname"><em>hint</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td></td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Attempts to break undo stack dependencies for writing the given file. If it is unable to do so, it will clear the controller's contributions to the stack. Returns YES if it successfully broke the dependencies, and NO if the stack had to be cleared. </p>

</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="a1875b07981f69ff10d2a9d0f80a8692b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1875b07981f69ff10d2a9d0f80a8692b">&sect;&nbsp;</a></span>_hfflags</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- _hfflags</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Property Documentation</h2>
<a id="a165dbb3c3e4c7f8154b2349b0d132147"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a165dbb3c3e4c7f8154b2349b0d132147">&sect;&nbsp;</a></span>representers</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (NSArray*) representers</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">atomic</span><span class="mlabel">copy</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="a8e3c9ca47f754544fef36de9d7e0f56e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8e3c9ca47f754544fef36de9d7e0f56e">&sect;&nbsp;</a></span>byteArray</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (<a class="el" href="interface_h_f_byte_array.html">HFByteArray</a>*) byteArray</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">strong</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The byte array must be non-nil. In general, HFRepresenters should not use this to determine what bytes to display. Instead they should use copyBytes:range: or dataForRange: below. </p>

</div>
</div>
<a id="a756334ab2576fda6191f396424eb032a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a756334ab2576fda6191f396424eb032a">&sect;&nbsp;</a></span>selectedContentsRanges</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (NSArray*) selectedContentsRanges</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">copy</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>An array of HFRangeWrappers, representing the selected ranges. It satisfies the following: The array is non-nil. There always is at least one selected range. If any range has length 0, that range is the only range. No range extends beyond the contentsLength, with the exception of a single zero-length range at the end.</p>
<p>When setting, the setter MUST obey the above criteria. A zero length range when setting or getting represents the cursor position. </p>

</div>
</div>
<a id="a669a1b434286d5a7a7f2d43db782317b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a669a1b434286d5a7a7f2d43db782317b">&sect;&nbsp;</a></span>bytesPerColumn</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (NSUInteger) bytesPerColumn</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="ace0cc93e891e8b31c4320040702a6f0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ace0cc93e891e8b31c4320040702a6f0f">&sect;&nbsp;</a></span>editMode</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (<a class="el" href="_h_f_controller_8h.html#a699a6c9cf2166c36da490e29d6ed2473">HFEditMode</a>) editMode</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<a id="afc8537436d0b38a6763563296bd23a66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afc8537436d0b38a6763563296bd23a66">&sect;&nbsp;</a></span>displayedLineRange</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (<a class="el" href="struct_h_f_f_p_range.html">HFFPRange</a>) displayedLineRange</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Get the current displayed line range. The displayed line range is an <a class="el" href="struct_h_f_f_p_range.html" title="HFFPRange is a struct used for representing floating point ranges, similar to NSRange. It contains two long doubles. ">HFFPRange</a> (range of long doubles) containing the lines that are currently displayed.</p>
<p>The values may be fractional. That is, if only the bottom half of line 4 through the top two thirds of line 8 is shown, then the displayedLineRange.location will be 4.5 and the displayedLineRange.length will be 3.17 ( = 7.67 - 4.5). Representers are expected to be able to handle such fractional values.</p>
<p>When setting the displayed line range, the given range must be nonnegative, and the maximum of the range must be no larger than the total line count. </p>

</div>
</div>
<a id="ac564096554a861c9f44367124db70b4b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac564096554a861c9f44367124db70b4b">&sect;&nbsp;</a></span>font</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (NSFont*) font</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">copy</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The current font. </p>

</div>
</div>
<a id="a6de9ee37b5cd96782914f3eeebc90b16"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6de9ee37b5cd96782914f3eeebc90b16">&sect;&nbsp;</a></span>undoManager</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (NSUndoManager*) undoManager</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">strong</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>The undo manager. If no undo manager is set, then undo is not supported. By default the undo manager is nil. </p>

</div>
</div>
<a id="a0ccaf58ac06e6510b2f40fc1f07c5211"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ccaf58ac06e6510b2f40fc1f07c5211">&sect;&nbsp;</a></span>editable</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) editable</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Whether the user can edit the document. </p>

</div>
</div>
<a id="a84544b8696b23b09c57d4109b66aff32"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a84544b8696b23b09c57d4109b66aff32">&sect;&nbsp;</a></span>shouldAntialias</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) shouldAntialias</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Whether the text should be antialiased. Note that Mac OS X settings may prevent antialiasing text below a certain point size. </p>

</div>
</div>
<a id="a6b5134d1f69168837f03bebaa9cba8a8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6b5134d1f69168837f03bebaa9cba8a8">&sect;&nbsp;</a></span>shouldColorBytes</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) shouldColorBytes</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>When enabled, characters have a background color that correlates to their byte values. </p>

</div>
</div>
<a id="aea515702f7baa6ee15205e02522bd6d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aea515702f7baa6ee15205e02522bd6d6">&sect;&nbsp;</a></span>shouldShowCallouts</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) shouldShowCallouts</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>When enabled, byte bookmarks display callout-style labels attached to them. </p>

</div>
</div>
<a id="abb13ce4a51b7bf13e0c801ef7efc5714"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abb13ce4a51b7bf13e0c801ef7efc5714">&sect;&nbsp;</a></span>shouldHideNullBytes</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) shouldHideNullBytes</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>When enabled, null bytes are hidden in the hex view. </p>

</div>
</div>
<a id="aa7a2e2b3a4e90c3c56ba3129cfecf8b6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa7a2e2b3a4e90c3c56ba3129cfecf8b6">&sect;&nbsp;</a></span>shouldLiveReload</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">- (BOOL) shouldLiveReload</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">read</span><span class="mlabel">write</span><span class="mlabel">nonatomic</span><span class="mlabel">assign</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>When enabled, unmodified documents are auto refreshed to their latest on disk state. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="_h_f_controller_8h_source.html">HFController.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.12
</small></address>
</body>
</html>
